[ InputStream 、InputStreamReader、BufferedInputStream 、BufferedReader、FileInputStream、FileReader ]

&&

[ OutputStream、OutputStreamWriter、BufferedOutputStream、BufferedWriter、FileOutputStream、FileWriter ]

InputStream && OutputStream:

  • 是老大!!!
  • 将字节流转换成字符流

InputStreamReader&& OutputStreamWriter:

  • 将字节流转换成字符流 —> 创建字符流缓冲区

BufferedInputStream && BufferedOutputStream:

  • 数据流的缓存,没有缓冲的操作
  • 读一个字节,写一个。磁盘的IO比内存的操作慢
  • 所以不带缓冲的额流会比带缓冲的流慢

BufferedReader && BufferedWriter

  • 高效读取
  • 从字符输入流中读取文本,缓冲各个字符

FileInputStream && FileOutputStream

  • 老大InputSream的子类
  • 一般用来读取二进制文件
  • 文本文件使用read(byte[] b)方法读取整个文件,再byte数组转换为String

FileReader && FileWriter

  • InputStreamReader的子类
  • 按字符读取流中数据

还有很多。。。更新中。。。


InputStream && OutputStream

private static void rwIOStream() throws Exception {
    InputStream in =new FileInputStream("fileIn\\txt1");
    OutputStream out = new FileOutputStream("fileOut\\txt1");
    int len;
    long begin = System.currentTimeMillis();
    while((len=in.read())!=-1)
    {
        out.write(len);
    }
    long end = System.currentTimeMillis();
    System.out.println(end-begin);
    in.close();
    out.close();
}

InputStreamReader&& OutputStreamWriter

private static void rwIOStreamRW() throws Exception {
    InputStreamReader inReader =new InputStreamReader(new FileInputStream("fileIn\\txt1"));
    OutputStreamWriter outWriter =new OutputStreamWriter(new FileOutputStream("fileIn\\txt1"));
    int len;
    long begin = System.currentTimeMillis();
    while((len=inReader.read())!=-1)
    {
        outWriter.write(len);
    }
    long end = System.currentTimeMillis();
    System.out.println(end-begin);
    inReader.close();
    outWriter.close();
}

BufferedInputStream && BufferedOutputStream

private static void rwBufferedIOStram() throws Exception {
    BufferedInputStream in = new BufferedInputStream(new FileInputStream("fileIn\\txt1"));
    BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("fileOut\\txt1"));
    long begin = System.currentTimeMillis();
    int len;
    while((len=in.read())!=-1)
    {
        out.write(len);
        //System.out.print((char)len);    //    字符打印
    }
    long end = System.currentTimeMillis();
    System.out.println(end-begin);
    in.close();
    out.close();
}

BufferedReader && BufferedWriter

private static void rwBufferedRWr() throws Exception {
    BufferedReader reader = new BufferedReader(new FileReader("fileIn\\txt1"));
    BufferedWriter writer = new BufferedWriter(new FileWriter("fileIn\\txt1"));
    int len;
    long begin = System.currentTimeMillis();
    while((len = reader.read())!=-1)
    {
        writer.write(len);
        //System.out.print((char)len);
    }
    long end = System.currentTimeMillis();
    System.out.println(end-begin);
    reader.close();
    writer.close();
}

FileInputStream && FileOutputStream

private static void rwFileIOStream() throws Exception {
    FileInputStream reader = new FileInputStream("fileIn\\txt1");
    FileOutputStream writer = new FileOutputStream("fileIn\\txt1");
    int len;
    long begin = System.currentTimeMillis();
    while((len = reader.read())!=-1)
    {
        writer.write(len);
        //System.out.print((char)len);
    }
    long end = System.currentTimeMillis();
    System.out.println(end-begin);
    reader.close();
    writer.close();
}

FileReader && FileWriter

private static void rwFile() throws Exception {
    FileReader reader = new FileReader("fileIn\\txt1");
    FileWriter writer = new FileWriter("fileOut\\txt1");
    int len;
    long begin = System.currentTimeMillis();
    while((len = reader.read())!=-1)
    {
        writer.write(len);
        //System.out.print((char)len);
    }
    long end = System.currentTimeMillis();
    System.out.println(end-begin);
    reader.close();
    writer.close();
}

程序

package file;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;

public class filecopy {

    public static void main(String[] avg) throws Exception
    {
        try {

            //复制例
            song();
            //字符读写 切割处理
            rwFileSplitEnglish();

            //InputStream && OutputStream
            rwIOStream();
            //InputStreamReader && OutputStreamWriter
            rwIOStreamRW();
            //BufferedInputStream && BufferedOutputStream
            rwBufferedIOStram();
            //BufferedReader && BufferedWriter
            rwBufferedRWr();
            //FileInputStream && FileOutputStream
            rwFileIOStream();
            //FileReader && FileWriter
            rwFile();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void rwIOStream() throws Exception {
        InputStream in =new FileInputStream("fileIn\\txt1");
        OutputStream out = new FileOutputStream("fileOut\\txt1");
        int len;
        long begin = System.currentTimeMillis();
        while((len=in.read())!=-1)
        {
            out.write(len);
        }
        long end = System.currentTimeMillis();
        System.out.println(end-begin);
        in.close();
        out.close();
    }

    private static void rwIOStreamRW() throws Exception {
        InputStreamReader inReader =new InputStreamReader(new FileInputStream("fileIn\\txt1"));
        OutputStreamWriter outWriter =new OutputStreamWriter(new FileOutputStream("fileIn\\txt1"));
        int len;
        long begin = System.currentTimeMillis();
        while((len=inReader.read())!=-1)
        {
            outWriter.write(len);
        }
        long end = System.currentTimeMillis();
        System.out.println(end-begin);
        inReader.close();
        outWriter.close();
    }

    private static void rwBufferedIOStram() throws Exception {
        BufferedInputStream in = new BufferedInputStream(new FileInputStream("fileIn\\txt1"));
        BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("fileOut\\txt1"));
        long begin = System.currentTimeMillis();
        int len;
        while((len=in.read())!=-1)
        {
            out.write(len);
            //System.out.print((char)len);    //    字符打印
        }
        long end = System.currentTimeMillis();
        System.out.println(end-begin);
        in.close();
        out.close();
    }

    private static void rwBufferedRWr() throws Exception {
        BufferedReader reader = new BufferedReader(new FileReader("fileIn\\txt1"));
        BufferedWriter writer = new BufferedWriter(new FileWriter("fileIn\\txt1"));
        int len;
        long begin = System.currentTimeMillis();
        while((len = reader.read())!=-1)
        {
            writer.write(len);
            //System.out.print((char)len);
        }
        long end = System.currentTimeMillis();
        System.out.println(end-begin);
        reader.close();
        writer.close();
    }

    private static void rwFileIOStream() throws Exception {
        FileInputStream reader = new FileInputStream("fileIn\\txt1");
        FileOutputStream writer = new FileOutputStream("fileIn\\txt1");
        int len;
        long begin = System.currentTimeMillis();
        while((len = reader.read())!=-1)
        {
            writer.write(len);
            //System.out.print((char)len);
        }
        long end = System.currentTimeMillis();
        System.out.println(end-begin);
        reader.close();
        writer.close();
    }

    private static void rwFile() throws Exception {
        FileReader reader = new FileReader("fileIn\\txt1");
        FileWriter writer = new FileWriter("fileOut\\txt1");
        int len;
        long begin = System.currentTimeMillis();
        while((len = reader.read())!=-1)
        {
            writer.write(len);
            //System.out.print((char)len);
        }
        long end = System.currentTimeMillis();
        System.out.println(end-begin);
        reader.close();
        writer.close();
    }

    private static void rwFileSplitEnglish() throws Exception {
        String str = "";
        FileReader reader = new FileReader("fileIn\\txt1");
        int len;
        while((len = reader.read())!=-1)
            str +=(char)len;
        reader.close();

        System.out.println(str);

        String re  = " ";
        String s[] = str.split(re);

        for (int i = 0; i < s.length; i++) {
            System.out.print(s[i]);
        }
        System.out.println(str.length());
    }

    private static void song() throws Exception {
        InputStream in = new FileInputStream("fileIn\\你一生的故事.mp3");

        OutputStream out =  new FileOutputStream("fileOut\\你一生的故事2.mp3");
        int len;
        long begintime = System.currentTimeMillis();
        while((len=in.read())!=-1)
        {
            out.write(len);
        }
        long endtime = System.currentTimeMillis();
        System.out.println(endtime-begintime);
        in.close();
        out.close();
    }
}